namespace OhioState.Graphics
{
    //
    // IPreviewable interface
    //  Used by objects that would like to display a preview of themselves
    //  in the Asset Manager Control
    //
    // **************
    // IMPORTANT: If you intend to implement this interface, you must also implement a
    //  copy constructor.  This is a constructor that takes the same type as the object as an argument
    //  and copies the data from that object into the object that the constructor is invoked on.
    //  It looks like this:
    //
    //     public Object(Object obj) { ... }
    //
    //  It is used to create a local copy of the object to allow the preview to be generated locally in
    //  a remoting environment instead of having the preview created remotely.  I don't know how to
    //  explicitly enforce this with the interface, so I'm just gonna ask nicely.
    //

    /// <summary>
    /// Interface for previewable objects
    /// </summary>
    public interface IPreviewable
    {   
         /// <summary>
         /// Get a preview of the object
         /// One possible use for this is to return an icon that represents
         /// visually what a transfer function looks like.
         /// </summary>
         /// <param name="bitmap">input bitmap</param>
         void Preview(System.Drawing.Bitmap bitmap);
    }
}
